package 炫彩动画类

import (
	objectbase "gitee.com/go_888/xcgui/xcgui/objectbase"
	xc "gitee.com/go_888/xcgui/xcgui/xc"
)

// 动画特效基类.
type animaBase struct {
	objectbase.X结构_对象基类
}

// 动画_运行, 并且增加引用计数.
//
// hRedrawObjectUI: 当更新UI时重绘的UI层. UI对象句柄: 窗口句柄, 元素句柄, 形状句柄, SVG句柄.
func (a *animaBase) X运行(当更新UI时重绘的UI层 int) *animaBase {
	xc.X动画_运行(a.X句柄, 当更新UI时重绘的UI层)
	return a
}

// 动画_释放, 停止动画, 并释放引用, 当引用计数为0时自动销毁.
//
// bEnd: 是否立即执行到终点.
func (a *animaBase) X释放(立即到终点 bool) bool {
	return xc.X动画_释放(a.X句柄, 立即到终点)
}

// 动画_释放扩展, 释放与指定UI对象关联的所有动画, 返回释放动画数量.
//
// bEnd: 是否立即执行到终点.
func (a *animaBase) X释放EX(立即到终点 bool) int32 {
	return xc.X动画_释放EX(a.X句柄, 立即到终点)
}

// 动画_取UI对象, 获取动画关联的UI对象, 返回UI对象句柄.
func (a *animaBase) X取UI对象() int {
	return xc.X动画_取UI对象(a.X句柄)
}

// 动画_启用自动销毁, TRUE: 当引用计数为0时自动销毁, FALSE: 手动销毁.
//
// bEnable: 是否启用.
func (a *animaBase) X启用自动销毁(是否启用 bool) *animaBase {
	xc.X动画_启用自动销毁(a.X句柄, 是否启用)
	return a
}

// 动画_置回调. TODO: 有问题用不了, 因为 syscall.NewCallback 创建不了没有返回值的回调函数指针.
//
// callback: 回调函数.
func (a *animaBase) X弃用_设置回调(回调函数 xc.FunAnimation) *animaBase {
	xc.X弃用_动画_设置回调(a.X句柄, 回调函数)
	return a
}

// 动画_置用户数据.
//
// nUserData: 用户数据.
func (a *animaBase) X设置用户数据(用户数据 int) *animaBase {
	xc.X动画_设置用户数据(a.X句柄, 用户数据)
	return a
}

// 动画_取用户数据, 返回用户数据.
func (a *animaBase) X取用户数据() int {
	return xc.X动画_取用户数据(a.X句柄)
}

// 动画_停止.
func (a *animaBase) X停止() bool {
	return xc.X动画_停止(a.X句柄)
}

// 动画_启动.
func (a *animaBase) X启动() bool {
	return xc.X动画_启动(a.X句柄)
}

// 动画_暂停.
func (a *animaBase) X暂停() bool {
	return xc.X动画_暂停(a.X句柄)
}
